class_name WaveData
extends Resource

enum SpawnType {
	FIXED,
	RANDOM
}

@export var from: int
@export var to: int
@export var wave_time := 20.0
@export var units:Array[WaveUnitData]
@export var spawn_type := SpawnType.RANDOM
@export var fixed_spawn_time := 1.0
@export var min_spawn_time := 1.0
@export var max_spawn_time := 1.0


func get_random_unit_scene() -> PackedScene:
	if units.is_empty():
		return
	var enemies: Array[PackedScene]
	var weights: Array[float]
	
	for unit in units:
		enemies.append(unit.unit_scene)
		weights.append(unit.weight)
		
	var rng := RandomNumberGenerator.new()
	var random_unit := enemies[rng.rand_weighted(weights)]
	return random_unit
	
func is_valid_index(index: int) -> bool:
	return index >= from and index <= to
